package talayaco.manager.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import talayaco.dao.ClienteDAO;
import talayaco.dao.ProveedorDAO;
import talayaco.dao.impl.ClienteDAOImpl;
import talayaco.dao.impl.ProveedorDAOImpl;
import talayaco.enums.TipoProveedorEnum;
import talayaco.manager.GestionProveedoresMAN;
import talayaco.utils.MapToVo;
import talayaco.vo.ProveedorVO;

public class GestionProveedoresMANimpl implements GestionProveedoresMAN {

	private static ProveedorDAO proveedorDAO = new ProveedorDAOImpl();

	private static ClienteDAO clienteDAO = new ClienteDAOImpl();

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * talayaco.manager.GestionProveedoresMAN#insertProveedor(java.util.Map)
	 */
	public void insertProveedor(Map<String, String> proveedor) throws Exception {

		// Me estas pasando la descripcion de la provincia, tendria que ser el
		// id
		proveedorDAO.insertProveedor(proveedor);
		//TODO lo saque porq repetia los datos
		//if (proveedor.get("tipo").equals(TipoProveedorEnum.N.getId())) {
		//	clienteDAO.insertCliente(proveedor);
		//}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * talayaco.manager.GestionProveedoresMAN#updateProveedor(java.util.Map)
	 */
	public void updateProveedor(Map<String, String> proveedor) throws Exception {
		proveedorDAO.updateProveedor(proveedor);

		// falta el id del proveedor

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * talayaco.manager.GestionProveedoresMAN#deleteProveedor(java.lang.String)
	 */
	public void deleteProveedor(String nombre) throws Exception {

		proveedorDAO.deleteProveedor(nombre);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * talayaco.manager.GestionProveedoresMAN#getProveedorById(java.lang.Long)
	 */
	public Map<String, String> getProveedorByNombre(String nombreProveedor)
			throws Exception {
		Map<String, String> datosProveedor = new HashMap<String, String>();
		datosProveedor = (Map<String, String>) proveedorDAO
				.getProveedorByNombre(nombreProveedor);
		return datosProveedor;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.manager.GestionProveedoresMAN#getProveedores()
	 */
	public List<Map<String, String>> getProveedores(String tipoProveedor)
			throws Exception {

		List<Map<String, String>> datosProveedor = new ArrayList<Map<String, String>>();
		datosProveedor = (List<Map<String, String>>) proveedorDAO
				.getProveedores(tipoProveedor);
		return datosProveedor;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * talayaco.manager.GestionProveedoresMAN#existeProveedor(java.lang.String)
	 */
	public Boolean existeProveedor(String nombre) throws Exception {
		String existe = new String();
		existe = (String) proveedorDAO.existeProveedor(nombre);

		if (existe.equals("1"))
			return true;
		else
			return false;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * talayaco.manager.GestionProveedoresMAN#validarMovimientosProveedor(java
	 * .lang.String)
	 */
	public Boolean validarMovimientosProveedor(String nombreProveedor)
			throws Exception {
		Long cantidad = proveedorDAO
				.validarMovimientosProveedor(nombreProveedor);
		if (cantidad == 0) {
			return Boolean.FALSE;
		} else
			return Boolean.TRUE;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.manager.GestionProveedoresMAN#getProveedoresVO()
	 */
	public List<ProveedorVO> getProveedoresVO() throws Exception {
		List<Map<String, String>> proveedores = proveedorDAO
				.getProveedores(null);
		List<ProveedorVO> proveedoresVO = new ArrayList<ProveedorVO>();
		ProveedorVO proveedorVO;
		for (Map<String, String> proveedor : proveedores) {
			proveedorVO = MapToVo.mapToProveedorVO(proveedor);
			proveedoresVO.add(proveedorVO);
		}
		return proveedoresVO;
	}

}
